from dataclasses import dataclass
from datetime import datetime
from aiogram.types.user import User
from app.dates import compute_notification_dates


@dataclass
class Event:
    date_time: datetime
    organizer: User
    agenda: str
    participants: str
    meeting_url: str
    chat_id: int

@dataclass
class NotificationData:
    date_time_srting: str
    message: str
    chat_id: int

@dataclass
class Notifications:
    now: NotificationData
    befor_day: NotificationData
    befor_4hours: NotificationData
    befor_5mins: NotificationData

def get_notifications(event: Event) -> Notifications:
    """
    Принимает событие встречи и возврашает объект с напоминаниями
    """
    dateformat = "%d\-%m\-%Y"
    event_info = f"*Дата:* {event.date_time.strftime(dateformat)}\n\n*Время:* \
{event.date_time.strftime('%H:%M')} МСК\n\n*Повестка:* {event.agenda}\n\n*Участники:* \
{event.participants}\n\n*Место встречи:* {event.meeting_url}"

    message_now = f"Внимание\! {event.organizer.first_name} \
{event.organizer.last_name} запланировал\(а\) встречу\n\n{event_info}"
    
    notification_dates = compute_notification_dates(event.date_time)

    return Notifications(
            NotificationData("", message_now, event.chat_id),
            NotificationData(
                notification_dates.befor_day,
                f"Завтра встреча\n\n{event_info}",
                event.chat_id),
            NotificationData(
                notification_dates.befor_4hours,
                f"Сегодня встреча\n\n{event_info}",
                event.chat_id),
            NotificationData(
                notification_dates.befor_5mins,
                f"Начинается встреча\n\n{event_info}",
                event.chat_id)
            )


